package cn.hchaojie.javase.day08;

import java.util.Arrays;

import org.junit.Test;

import cn.hchaojie.javase.day06.Employee;

public class Demo {
	@Test
	public void test() {
		String s = "abc";
		String ss = "abc";		// ss和s都指向同样一个对象
		
//		String s1 = new String("abc");	// 不建议这样用
//		
		System.out.println("");
		// 常量池
	}
	
	@Test
	public void test2() {
		// 创建了两个对象
		
		// 首先会创建“abc"这个字符串，并把它放到常量池
		
		// new String() 会在堆里创建一个新的对象，并且把常量池里面的”abc"复制给它
		String s1 = new String("abc");	// 不建议这样用
		
		System.out.println();
		
	}
	
	@Test
	public void test3() {
		System.out.println("abc中".length());
		
		String s = "abc中";
		
		System.out.println(s.charAt(0));
		System.out.println(s.charAt(s.length() - 1));
		
		char[] array = s.toCharArray();
		System.out.println(Arrays.toString(array));
		
		// 字符串格式化
		Employee e = new Employee();
		e.setName("张三");
		e.setAge(18);
		
		// String.format()  System.out.printf()
		System.out.println("名字：" + e.getName() + " 年龄：" + e.getAge());
		String message = String.format("名字：%s 年龄：%d 分数：%.2f", e.getName(), e.getAge(), 99.55);
		System.out.println(message);
		System.out.printf("名字：%s 年龄：%d", e.getName(), e.getAge());
	}
	
	@Test
	public void test4() {
		String s = "abcd";
		for (int i = 0; i < s.length(); i++) {
			System.out.println(s.charAt(i));
		}
		
		// 字符串拼接用+号
		String[] array = {"abc", "def", "gh"};
		
		String s1 = "";
		for (String element : array) {
			s1 += element;
		}
		System.out.println(s1);
		
		// 求子串
		String s2 = "If a firm or company dumps goods";
		System.out.println(s2.indexOf("firm"));
		System.out.println(s2.indexOf("dmp"));		// -1
		
		// 找第一个单词
		int spaceIndex = s2.indexOf(" ");
		System.out.println(spaceIndex);
		System.out.println(s2.substring(0, spaceIndex));
		
		// 找最后一个单词
		spaceIndex = s2.lastIndexOf(" ");
		System.out.println(s2.substring(spaceIndex + 1));
		
	}
	
	@Test
	public void test5() {
		// 拼接字符串，如果使用+号，会产生很多的字符串对象，性能不好
		String s = "ab" + 123 + "cd" + "de";
		
		StringBuffer sb = new StringBuffer();
		sb.append("ab");
		sb.append(123);
		sb.append("cd");
		sb.append("de");
		
		// 绝大部分情况用StringBuilder，性能会好一点
		StringBuilder sb2 = new StringBuilder();
		sb2.append("ab");
		sb2.append(123);
		sb2.append("cd");
		sb2.append("de");
		
		
		// StringBuffer转String
		String output = sb.toString();
		System.out.println(output);
	}
}
